/**
 * 小程序分享功能全局 mixin
 * 实现分享给好友和分享到朋友圈功能
 */
export const shareMixin = {
  data() {
    return {
      shareConfig: {
        // 分享标题（默认）
        title: '甩单系统',
        // 分享路径，默认是当前页面，必须是以'/'开头的完整路径
        path: '',
        // 分享图片路径，支持PNG及JPG，不传入则使用默认截图
        // 显示图片长宽比是 5:4
        imageUrl: '/static/logo.png',
        // 分享描述
        summary: '发现更多商机，快来加入甩单系统！'
      }
    }
  },

  /**
   * 分享给好友
   * 用户点击右上角分享按钮时调用
   */
  onShareAppMessage() {
    // 默认分享配置
    let shareTitle = this.shareConfig?.title || '甩单系统'
    let sharePath = this.shareConfig?.path || '/pages/index/index'
    let shareImage = this.shareConfig?.imageUrl || '/static/logo.png'

    // 如果没有指定路径，尝试获取当前页面路径
    if (!this.shareConfig?.path) {
      try {
        const pages = getCurrentPages()
        if (pages && pages.length > 0) {
          const currentPage = pages[pages.length - 1]
          // #ifdef MP-WEIXIN
          sharePath = `/${currentPage.route}`
          // #endif
          // #ifdef MP-ALIPAY
          sharePath = currentPage.$page?.fullPath || sharePath
          // #endif
        }
      } catch (error) {
        console.warn('获取当前页面路径失败，使用默认路径:', error)
      }
    }

    // 如果有邀请者ID，添加到路径中
    const userInfo = uni.getStorageSync('userInfo')
    if (userInfo && userInfo.id) {
      const separator = sharePath.includes('?') ? '&' : '?'
      sharePath += `${separator}inviterId=${userInfo.id}`
    }

    console.log('分享给好友:', {
      title: shareTitle,
      path: sharePath,
      imageUrl: shareImage
    })

    return {
      title: shareTitle,
      path: sharePath,
      imageUrl: shareImage
    }
  },

  // 移除分享到朋友圈功能

  methods: {
    /**
     * 自定义分享配置
     * @param {Object} config 分享配置
     * @param {string} config.title 分享标题
     * @param {string} config.path 分享路径
     * @param {string} config.imageUrl 分享图片
     * @param {string} config.summary 分享描述
     */
    setShareConfig(config) {
      this.shareConfig = {
        ...this.shareConfig,
        ...config
      }
    },

    /**
     * 触发分享（用于自定义分享按钮）
     * 注意：这个方法只能在用户主动触发的事件中调用
     */
    triggerShare() {
      // 在小程序中，无法通过代码主动触发分享
      // 只能引导用户点击右上角的分享按钮
      uni.showModal({
        title: '分享提示',
        content: '请点击右上角的"..."按钮进行分享',
        showCancel: false,
        confirmText: '知道了'
      })
    }
  }
}

export default shareMixin
